package at.mri.dogwatch.client.gin;

import at.mri.dogwatch.client.pages.header.LoginHeaderPresenter;
import at.mri.dogwatch.client.pages.layout.MainPagePresenter;
import at.mri.dogwatch.client.pages.newvideo.NewVideoPresenter;
import at.mri.dogwatch.client.place.LoggedInGateKeeper;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.gwtplatform.dispatch.client.gin.DispatchAsyncModule;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import at.mri.dogwatch.client.pages.newestfeed.NewVideosFeedPresenter;
import at.mri.dogwatch.client.pages.videodetails.VideDetailsPresenter;

@GinModules({ DispatchAsyncModule.class, ClientModule.class })
public interface ClientGinjector extends Ginjector {

	EventBus getEventBus();

	PlaceManager getPlaceManager();
	
	LoggedInGateKeeper getLoggedInGateKeeper();

	AsyncProvider<MainPagePresenter> getMainPagePresenter();

	AsyncProvider<LoginHeaderPresenter> getLoginHeaderPresenter();

	AsyncProvider<NewVideoPresenter> getNewVideoPresenter();

	AsyncProvider<NewVideosFeedPresenter> getNewVideosFeedPresenter();

	AsyncProvider<VideDetailsPresenter> getVideDetailsPresenter();

}
